import type {RedirectorConfig} from '../types/config';
import {getDomain} from "../ui/utils.ts";

const STORAGE_KEY = 'request-redirector-config_' + getDomain();
console.log(STORAGE_KEY);

// 默认配置
const defaultConfig: RedirectorConfig = {
    apiConfig: [],
    globalHeaders: {},
    proxyConfigs: [],
};

// 配置变化的回调函数列表
const listeners: ((config: RedirectorConfig) => void)[] = [];

export class ConfigStore {
    static getConfig(): RedirectorConfig {
        try {
            const config = GM_getValue(STORAGE_KEY, defaultConfig);
            return config || {...defaultConfig};
        } catch {
            return {...defaultConfig};
        }
    }

    static saveConfig(config: RedirectorConfig) {
        GM_setValue(STORAGE_KEY, config);
        // 通知所有监听器
        listeners.forEach(listener => listener(config));
    }

    static resetConfig() {
        GM_setValue(STORAGE_KEY, defaultConfig);
        // 通知所有监听器
        listeners.forEach(listener => listener(defaultConfig));
    }

    // 添加配置变化监听器
    static addChangeListener(listener: (config: RedirectorConfig) => void) {
        listeners.push(listener);
    }

    // 移除配置变化监听器
    static removeChangeListener(listener: (config: RedirectorConfig) => void) {
        const index = listeners.indexOf(listener);
        if (index > -1) {
            listeners.splice(index, 1);
        }
    }
} 